#ifndef UNIT_MOVE_H
#define UNIT_MOVE_H

#include "GameCommand.h"
#include <string>

struct Unit_Move : public GameCommand
{
	static string command;
	unsigned long id;
	unsigned x;
	unsigned y;
	
	Unit_Move() : GameCommand() { }
	Unit_Move(unsigned long Id, unsigned X, unsigned Y);
	
	virtual ~Unit_Move() {}
	
	virtual void onExecute();
	virtual string toString();
	virtual SerializedGameCommand serialize() const;
	
	static Unit_Move* interpret(const SerializedGameCommand&);
	static Unit_Move* interpret(const char* line);
	
private:
	/*	If you get a link error regarding a command's copy constructor, it's because it's defined privately. We force
		passing by reference for efficiency.
	*/
	Unit_Move(const Unit_Move&);
	Unit_Move& operator=(const Unit_Move&);
};

#endif
